import UIKit

//
@available(iOS 2.0, *)
extension QKC where AA :UISlider {
		// default 0.0. this value will be pinned to min/max
    open func value_qk_s(_ value:  Float ) -> QKC<AA,YY,ZZ, Float >{
		return link(next: value).then_QK { $0.value.value = value }
	}
    open func value_qk_g() -> QKC<AA,YY,ZZ, Float >{
		 self +^ self.value.value
	}

		// default 0.0. the current value may change if outside new min value
    open func minimumValue_qk_s(_ minimumValue:  Float ) -> QKC<AA,YY,ZZ, Float >{
		return link(next: minimumValue).then_QK { $0.value.minimumValue = minimumValue }
	}
    open func minimumValue_qk_g() -> QKC<AA,YY,ZZ, Float >{
		 self +^ self.value.minimumValue
	}

		// default 1.0. the current value may change if outside new max value
    open func maximumValue_qk_s(_ maximumValue:  Float ) -> QKC<AA,YY,ZZ, Float >{
		return link(next: maximumValue).then_QK { $0.value.maximumValue = maximumValue }
	}
    open func maximumValue_qk_g() -> QKC<AA,YY,ZZ, Float >{
		 self +^ self.value.maximumValue
	}

		// default is nil. image that appears to left of control (e.g. speaker off)
    open func minimumValueImage_qk_s(_ minimumValueImage:  UIImage? ) -> QKC<AA,YY,ZZ, UIImage? >{
		return link(next: minimumValueImage).then_QK { $0.value.minimumValueImage = minimumValueImage }
	}
    open func minimumValueImage_qk_g() -> QKC<AA,YY,ZZ, UIImage? >{
		 self +^ self.value.minimumValueImage
	}

		// default is nil. image that appears to right of control (e.g. speaker max)
    open func maximumValueImage_qk_s(_ maximumValueImage:  UIImage? ) -> QKC<AA,YY,ZZ, UIImage? >{
		return link(next: maximumValueImage).then_QK { $0.value.maximumValueImage = maximumValueImage }
	}
    open func maximumValueImage_qk_g() -> QKC<AA,YY,ZZ, UIImage? >{
		 self +^ self.value.maximumValueImage
	}

		// if set, value change events are generated any time the value changes due to dragging. default = YES
    open func isContinuous_qk_s(_ isContinuous:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: isContinuous).then_QK { $0.value.isContinuous = isContinuous }
	}
    open func isContinuous_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isContinuous
	}

    @available(iOS 5.0, *)
    open func minimumTrackTintColor_qk_s(_ minimumTrackTintColor:  UIColor?) -> QKC<AA,YY,ZZ, UIColor?>{
		return link(next: minimumTrackTintColor).then_QK { $0.value.minimumTrackTintColor = minimumTrackTintColor }
	}
    @available(iOS 5.0, *)
    open func minimumTrackTintColor_qk_g() -> QKC<AA,YY,ZZ, UIColor?>{
		 self +^ self.value.minimumTrackTintColor
	}

    @available(iOS 5.0, *)
    open func maximumTrackTintColor_qk_s(_ maximumTrackTintColor:  UIColor?) -> QKC<AA,YY,ZZ, UIColor?>{
		return link(next: maximumTrackTintColor).then_QK { $0.value.maximumTrackTintColor = maximumTrackTintColor }
	}
    @available(iOS 5.0, *)
    open func maximumTrackTintColor_qk_g() -> QKC<AA,YY,ZZ, UIColor?>{
		 self +^ self.value.maximumTrackTintColor
	}

    @available(iOS 5.0, *)
    open func thumbTintColor_qk_s(_ thumbTintColor:  UIColor?) -> QKC<AA,YY,ZZ, UIColor?>{
		return link(next: thumbTintColor).then_QK { $0.value.thumbTintColor = thumbTintColor }
	}
    @available(iOS 5.0, *)
    open func thumbTintColor_qk_g() -> QKC<AA,YY,ZZ, UIColor?>{
		 self +^ self.value.thumbTintColor
	}

    open func currentThumbImage_qk_g() -> QKC<AA,YY,ZZ, UIImage? >{
		 self +^ self.value.currentThumbImage
	}

    open func currentMinimumTrackImage_qk_g() -> QKC<AA,YY,ZZ, UIImage? >{
		 self +^ self.value.currentMinimumTrackImage
	}

    open func currentMaximumTrackImage_qk_g() -> QKC<AA,YY,ZZ, UIImage? >{
		 self +^ self.value.currentMaximumTrackImage
	}

		// move slider at fixed velocity (i.e. duration depends on distance). does not send action
    open func setValue_qk_f(_ value: Float, animated: Bool) -> QKC<AA,YY,ZZ, Float>{
		 self +^ self.value.setValue(value, animated:animated) +^ value
	}

	// e.g blue on the left as you increase and white to the right of the thumb. The track images should be 3 part resizable (via UIImage's resizableImage methods) along the direction that is longer
    open func setThumbImage_qk_f(_ image: UIImage?, for state: UIControl.State) -> QKC<AA,YY,ZZ, UIImage?>{
		 self +^ self.value.setThumbImage(image, for:state) +^ image
	}

    open func setMinimumTrackImage_qk_f(_ image: UIImage?, for state: UIControl.State) -> QKC<AA,YY,ZZ, UIImage?>{
		 self +^ self.value.setMinimumTrackImage(image, for:state) +^ image
	}

    open func setMaximumTrackImage_qk_f(_ image: UIImage?, for state: UIControl.State) -> QKC<AA,YY,ZZ, UIImage?>{
		 self +^ self.value.setMaximumTrackImage(image, for:state) +^ image
	}

    open func thumbImage_qk_f(for state: UIControl.State) -> QKC<AA,YY,ZZ,UIImage?>{
		 self +^ self.value.thumbImage(for:state)
	}

    open func minimumTrackImage_qk_f(for state: UIControl.State) -> QKC<AA,YY,ZZ,UIImage?>{
		 self +^ self.value.minimumTrackImage(for:state)
	}

    open func maximumTrackImage_qk_f(for state: UIControl.State) -> QKC<AA,YY,ZZ,UIImage?>{
		 self +^ self.value.maximumTrackImage(for:state)
	}

	// lets a subclass lay out the track and thumb as needed
    open func minimumValueImageRect_qk_f(forBounds bounds: CGRect) -> QKC<AA,YY,ZZ,CGRect>{
		 self +^ self.value.minimumValueImageRect(forBounds:bounds)
	}

    open func maximumValueImageRect_qk_f(forBounds bounds: CGRect) -> QKC<AA,YY,ZZ,CGRect>{
		 self +^ self.value.maximumValueImageRect(forBounds:bounds)
	}

    open func trackRect_qk_f(forBounds bounds: CGRect) -> QKC<AA,YY,ZZ,CGRect>{
		 self +^ self.value.trackRect(forBounds:bounds)
	}

    open func thumbRect_qk_f(forBounds bounds: CGRect, trackRect rect: CGRect, value: Float) -> QKC<AA,YY,ZZ,CGRect>{
		 self +^ self.value.thumbRect(forBounds:bounds, trackRect:rect, value:value)
	}

}

